Appendix A
(normative)
CalDAV Testing Matrix

Table A.1 — 6th CalDAV Interop Testing Event — September 2006

Server 1

Server 2

Server 3

Server 4

A

B

C

A

B

C

A

B

C

A

B

C

1.

Event creation.

1.1.

Create new single-instance meeting titled “Meeting 1.1” with the location “Durham”.

P

P

P

P

P

P

P

N

P

1.2.

Create new meeting titled “Meeting 1.2” recurring every Monday from 10:00 AM to 11:00 AM for 4 weeks

P

P

P

P

P

P

P

N

P

1.3.

Create new single-instance meeting titled “Meeting 1.3” with 2 other attendees.

P

P

N

P

P

P

N

N

N

1.4.

Create new single-instance meeting titled “Meeting 1.4” with an alarm set to trigger 15 minutes prior to the schedule time of the meeting

P

P

P

P

P

P

F

N

P

2.

Event modification

2.1.

Modify the title of meeting “Meeting 1.1” to “Meeting 1.1bis”.

P

P

P

P

P

P

N

P

2.2.

Modify the location of the meeting “Meeting 1.1bis” to “Seattle bis”.

P

P

P

P

P

P

N

P

2.3.

Reschedule meeting “Meeting 1.1bis” to the next day.

P

P

P

P

P

P

N

P

2.4.

Add an attendee to “Meeting 1.1bis”.

P

P

N

P

P

N

N

N

2.5.

Add an alarm to “Meeting 1.1bis”.

P

P

P

P

P

F

N

P

2.6.

Modify the title of the 1st instance of the recurring meeting created in 1.2.

P

P

P

P

P

F

N

F

2.7.

Modify the participation status of the 1st attendee in meeting 1.3 to DECLINED.

P

P

N

P

N

P

N

N

2.8.

Cancel the 4th instance of the recurring meeting created in 1.2.

P

P

P

P

P

V

N

N

2.9.

One client changes “Meeting 1.1bis” to a different time, second client ‘refreshes’ its display to see the modification.

P

P

P

P

P

F

N

P

3.

Event retrieval

3.1.

calendar-query REPORT

N

N

N

N

N

3.1.1.

No filtering (match everything)

N

N

N

N

N

3.1.1.1.

Query all components and return all data. (tests <calendar-query> and <filter>)

N

N

N

N

N

3.1.1.2.

Query all components and return ETag WebDAV property and all data. (tests <calendar-query>+<DAV:prop> and <filter>)

N

N

N

N

N

3.1.1.3.

Query all components and return just entire VEVENT components. (tests <calendar-query>, <filter>+<comp-filter>)

N

N

N

N

N

3.1.1.4.

Query all components and return VEVENT components with only DTSTART, DTEND/DURATION, SUMMARY, UID, SEQUENCE, RRULE, RDATE, EXRULE, EXDATE, RECURRENCE-ID. (tests <calendar-query>, <filter><comp-filter>`, `<calendar-data><comp>+<prop>)

N

N

N

N

N

3.1.2.

time-range filtering

N

N

N

N

N

3.1.2.1.

Query all components within a one day time-range and return all data. Make sure that there is a recurring event that starts prior to the chosen time-range but has one non-overridden instance within the time-range. (tests <calendar-query>, <filter>+<time-range>)

N

N

N

N

N

3.1.2.2.

Query all components within a one week time-range and return just entire VEVENT components. Make sure that there is a recurring event that starts prior to the chosen time-range but has one overridden instance within the time-range. (tests <calendar-query>, <filter>+<time-range>)

N

N

N

N

N

3.1.3.

component based filtering

N

N

N

N

N

3.1.3.1.

Query all components that contain an embedded VALARM component. (tests <calendar-query>, <filter>+<comp-filter>)

N

N

N

N

N

3.1.3.2.

Query all components that contain an embedded VALARM component whose trigger falls within a specific time-range. (tests <calendar-query>, <filter><comp-filter><prop-filter>+<time-range>)

N

N

N

N

N

3.1.4.

property based filtering

N

N

N

N

N

3.1.4.1.

Query all components that contain any ORGANIZER property. (tests <calendar-query>, <filter><prop-filter><is-defined>)

N

N

N

N

N

3.1.4.2.

Query all components that contain an ORGANIZER property with a specific CUA text value case-insensitively. (tests <calendar-query>, <filter><prop-filter><text-match>+<caseless>)

N

N

N

N

N

3.1.4.3.

Query all components that contain an ORGANIZER property with a specific CUA text value case-sensitively. (tests <calendar-query>, <filter><prop-filter><text-match>+<caseless>)

N

N

N

N

N

3.1.5.

parameter based filtering

N

N

N

N

N

3.1.5.1.

Query all components that contain a DTSTART property with a TZID parameter. (tests <calendar-query>, <filter><prop-filter><text-match><param-filter><is-defined>)

N

N

N

N

N

3.1.5.2.

Query all components that contain an ATTENDEE property with PARTSTAT=NEEDS-ACTION parameter. (tests <calendar-query>, <filter><prop-filter><text-match><param-filter><text-match>)

N

N

N

N

N

3.2.

calendar-multiget REPORT

N

N

N

N

N

3.2.1.

Query a specific href and return all data. (tests <calendar-multiget>)

N

N

N

N

N

3.2.2.

Query multiple hrefs (some of which do not exist) and return all data. (tests <calendar-multiget>)

N

N

N

N

N

3.2.3.

Query a specific href and return ETag WebDAV property and all data. (tests <calendar-multiget>+<DAV:prop>)

N

N

N

N

N

3.2.4.

Query multiple hrefs (some of which do not exist) and return ETag WebDAV property and all data. (tests <calendar-multiget>+<DAV:prop>)

N

N

N

N

N

3.2.5.

Query a specific href and return VEVENT components with only DTSTART, DTEND/DURATION, SUMMARY, UID, SEQUENCE, RRULE, RDATE, EXRULE, EXDATE, RECURRENCE-ID. (tests <calendar-query>, <calendar-data><comp><prop>)

N

N

N

N

N

3.2.6.

Query multiple hrefs (some of which do not exist) and return VEVENT components with only DTSTART, DTEND/DURATION, SUMMARY, UID, SEQUENCE, RRULE, RDATE, EXRULE, EXDATE, RECURRENCE-ID. (tests <calendar-query>, <calendar-data><comp><prop>)

N

N

N

N

N

4.

Event deletion

4.1.

Delete a single non-recurring meeting.

P

P

P

P

N

P

4.2.

Delete a single recurring meeting with no overridden instances.

P

P

P

P

N

P

4.3.

Delete a single recurring meeting with overridden instances.

P

P

P

P

N

P

4.4.

Delete a non-overridden instance of a recurring meeting.

P

P

P

P

N

P

4.5.

Delete an overridden instance of a recurring meeting.

P

P

P

P

N

P

5.

Access Control

5.1.

View access control details on current user’s main calendar.

N

N

N

N

N

N

5.2.

Change access control details on current user’s main calendar to add another user with read-only access. Verify that other user can view the calendar but not change it.

N

N

N

N

N

N

5.3.

Change access control details on current user’s main calendar to add another user with read-write access. Verify that other user can view the calendar and change it. Verify that changes done by one user are seen by the other.

N

N

N

N

N

N

5.4.

Remove another user’s access to the current user’s main calendar and verify they can no longer access the calendar.

N

N

N

N

N

N

6

Calendar Management

6.1

Browse the list of calendars on the server, including the current user’s personal calendars.

N

N

P

N

N

P

N

6.2

Create a new calendar in the current user’s personal calendar space.

N

P

P

N

P

P

N

6.3

Create a regular collection in the current user’s personal calendar space.

N

N

N

N

N

N

N

6.4

Create a new calendar inside the collection created in 6.3.

N

N

N

N

N

N

N

6.5

Delete the calendar created in 6.2.

N

P

P

N

P

F

N

6.6

Delete the collection created in 6.3.

N

N

N

N

N

N

N

7

Free Busy Reports

Setup

Create a new calendar and populate it with the following for one week:

Event on Monday, 9 am — 11 am, recurs every day for five times
Event on Monday, 12 pm — 1 pm, status tentative
Event on Monday, 2 pm — 3 pm, status cancelled
Event on Tuesday, 11 am — 12 pm
Event on Tuesday, 2 pm — 4 pm, recurs every day for four times
Event on Tuesday, 3 pm — 5 pm
Event on Wednesday, 11 am — 12 pm, status tentative
Event on Wednesday, 3 pm — 5 pm, status tentative
Event on Thursday, 11 am — 12 pm, status cancelled
Event on Thursday, 3 pm — 5 pm, status cancelled

N

N

N

N

N

P

7.1

Run a free-busy report for the entire week.

N

N

P

N

N

F

N

P

7.1.1

Verify two FREEBUSY periods for Monday, the second is BUSY-TENTATIVE.

N

N

P

N

N

F

N

P

7.1.2

Verify two FREEBUSY periods for Tuesday.

N

N

P

N

N

F

N

P

7.1.3

Verify four FREEBUSY periods for Wednesday, second and fourth are BUSY-TENTATIVE and one hour long.

N

N

P

N

N

F

N

P

7.1.4

Verify two FREEBUSY periods for Thursday.

N

N

P

N

N

N

P

7.1.5

N

N

P

N

N

F

N

P

N

N

N

N

N

P

N

N

N

N

N

P

N

N

N

N

N

P

7.1.5

Verify two FREEBUSY periods for Friday.

N

N

P

N

N

N

P

8

Scheduling

Setup

Three user accounts user1 (role Organizer), user2 (role Attendee), user3 (role Attendee) provisioned with suitable principal properties for calendar home, inbox, outbox and user addresses.

N

P

N

N

N

N

8.1

Organizer (user1) sends non-recurring message invite for Monday at 9am (1 hour) to each attendee. Verify that each attendee Inbox receives a copy of the invite.

N

P

N

N

N

N

8.2

Attendee (user2) accepts invite and sends back reply. Verify that reply is placed in Organizer Inbox.

N

P

N

N

N

N

8.3

Organizer (user1) updates invite with user2 accept state and resends invite. Verify that each attendee Inbox receives a copy of the new invite.

N

N

N

N

N

N

8.4

Attendee (user3) accepts updated invite and sends back reply. Verify that reply is placed in Organizer Inbox.

N

N

N

N

N

N

8.5

Organizer (user1) updates invite with user3 accept state and resends invite. Verify that each attendee Inbox receives a copy of the new invite.

N

N

N

N

N

N

8.6

Organizer (user1) cancels the invite. Verify that each attendee Inbox receives the cancellation.

N

P

N

N

N

N